package memento;

import java.util.LinkedList;
import java.util.List;

import vista.objetos.GraficableConEtiqueta;
import vista.objetos.NoEsObjetoDiagramableException;

public class MementoCompuesto implements IMemento {

	private List<MementoGraficable> guardable;
	private MementoGraficable guardableOriginal;
	
	public MementoCompuesto(GraficableConEtiqueta guardable)
	{
		this.guardableOriginal = (MementoGraficable) guardable.getMementoEspecializado();
		this.guardable = new LinkedList<>();
		
		try 
		{
			for (GraficableConEtiqueta graficable: guardable.getObjetoDiagramaDecorado().getGraficables()) 
				this.guardable.add( (MementoGraficable) graficable.getMementoEspecializado());
		}
		catch(NoEsObjetoDiagramableException excep) {
		};
	}
	
	@Override
	public void cargarMemento() 
	{
		guardableOriginal.cargarLogico();

		for (MementoGraficable memento: guardable)
			memento.cargarGraficable();
	}

	@Override
	public EstadoGuardable getGuardable() {
		return guardableOriginal.getGuardable();
	}

}
